extends IInventoryComponent


class_name EquipmentComponent
"""
负责直接使用技能/装备,处理不同道具的使用逻辑
"""


## 挂载的角色
@export var character: ICharacterComponent = null


func __check_exports() -> Dictionary:
    return IComponent.merge({
        "character": IComponent.find_up.bind(self, func(x): return x is ICharacterComponent, character),
    }, super.__check_exports())

func pickup(item: InventoryItem) -> bool:
    # 不可使用(如:材料)
    if item.source.usable == null:
        return false
    var usable: IUsableComponent = item.source.instantiate()
    NodeHelper.add_child(self, usable)
    usable.apply(character.get_character())
    # 永久性道具
    if item.source.type != InventoryResource.Type.Permanent:
        # 消耗性道具,减少道具数量
        item.amount -= 1
        # 非持续性道具需要立即释放
        if item.source.type == InventoryResource.Type.Oneoff:
            usable.queue_free()
        # 还有剩余数量,需要保留
        if item.amount > 0:
            return false
    return true
